package com.thread.sync.sync03;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.CopyOnWriteArrayList;

public class MyVector {

    public static void main(String[] args) {
        ConcurrentMap<String, String> conmap = new ConcurrentHashMap<String, String>();
        conmap.put("1", "1");
        conmap.put("2", "2");
        conmap.put("3", "3");
        //如果当前key不存在,再put,否则不put1
        conmap.putIfAbsent("3", "value");
        //同步容器,没问题
//		final Vector<String> tickets=new Vector<String>();
        //线程不同步的,存在问题
        List list = new ArrayList();
        //使用Collectionss改造成同步的,Vector底层也是基于这种形式实现的
        List tickets = Collections.synchronizedList(list);
        //使用并发容器,也可以同步1
        CopyOnWriteArrayList<String> cowa = new CopyOnWriteArrayList<String>();
        for (int i = 0; i < 1000; i++) {
            cowa.add("机票" + i);
        }
        //启动是个线程"卖票".如果没有人买到同样的票,则线程同步,否则,不同步,即两个人都买到了0号机票
        for (int i = 0; i < 10; i++) {
            new Thread(() -> {
                while (true) {
                    if (cowa.isEmpty()) break;
                    //remove(int location)  移除0位置上的元素并返回这个元素
                    System.out.println(Thread.currentThread().getName() + "-------------" + cowa.remove(0));
                }
            }).start();
        }

    }

}
